let globalData;

// 给定Class，打开弹出层显示
function openLayer(a, Fun) {
    $('.' + a).fadeIn(Fun)
}// 打开弹窗

// 初始化日历，并选中已签到的日期
function initSignIn(signInDates, initData) {
    globalData = initData;
    let i;
    // 假设已经签到的日期下标
    // let dateArray = [0, 2, 4, 6];
    let dateArray = signInDates;

    let $dateBox = $("#js-qiandao-list"),
        $currentDate = $(".current-date"),
        $qiandaoBtn = $("#js-just-qiandao"),
        _html = '',
        _handle = true,
        myDate = new Date();
    // 展示当天日期
    $currentDate.text(myDate.getFullYear() + '年' + parseInt(myDate.getMonth() + 1) + '月' + myDate.getDate() + '日');

    // 获取当前月第一天是在一周中的第几天
    let monthFirst = new Date(myDate.getFullYear(), parseInt(myDate.getMonth()), 1).getDay();

    // 下个月第一天时间
    let d = new Date(myDate.getFullYear(), parseInt(myDate.getMonth() + 1), 0);
    let totalDay = d.getDate(); // 获取当前月的总天数

    for (i = 0; i < 42; i++) {
        _html += '<li><div class="qiandao-icon"></div></li>'
    }
    // 生成日历网格
    $dateBox.html(_html);

    // 生成当月的日历且含已签到
    let $dateLi = $dateBox.find("li");
    for (i = 0; i < totalDay; ++i) {
        $dateLi.eq(i + monthFirst).addClass("date" + parseInt(i + 1));
        for (let j = 0; j < dateArray.length; ++j) {
            if ((i + 1) == dateArray[j]) {
                $dateLi.eq(i + monthFirst).addClass("qiandao");
            }
        }
    }

    // 判断当天是否已签到，数组中是下标
    if (dateArray.indexOf(myDate.getDate()) > -1) {// 已签到
        // 更改签到按钮样式
        $qiandaoBtn.addClass('actived');
        // 标识当天已签到
        _handle = false;
        $('.qiandao-notic').text('今日已领取积分，请明日继续签到');
    } else {
        $('.qiandao-notic').text('签到领积分');
        // 日历中当天的日期元素
        let $currentDateGrid = $(".date" + myDate.getDate());
        // 为当天的li添加Class（含有点击事件）
        $currentDateGrid.addClass('able-qiandao').attr('title', '点击签到');
        // 点击当天签到
        $dateBox.on("click", "li.able-qiandao", function () {
            if (_handle) {
                // $(this).addClass('qiandao');
                qiandaoFun();
            }
        });

        // 改变签到按钮内容
        $qiandaoBtn.on("click", function () {
            if (_handle) {
                qiandaoFun();
            }
        });

        // 签到函数
        function qiandaoFun() {
            let loadIndex = layer.load();
            // 点击签到
            $.post(globalData.signInUrl, {date: myDate.getDate()}, function (data) {
                layer.close(loadIndex);
                if (data.code == 1) {
                    // 标识当天已签到
                    $currentDateGrid.addClass('qiandao').removeAttr("title");
                    // 更改签到按钮
                    $qiandaoBtn.addClass('actived');
                    // 标识已签到
                    _handle = false;
                    $('.qiandao-notic').text('今日已领取积分，请明日继续签到');

                    // 签到成功显示提示弹出层
                    $('#signInSuccessText').text(data.data);
                    openLayer("qiandao-active", null);
                } else {
                    layer.msg(data.data);
                }
            }, 'json');
            // 签到成功显示提示弹出层
            // openLayer("qiandao-active", null);
        }
    }

    // 当天标识签到
    /*function qianDao() {
        $currentDateGrid.addClass('qiandao');
    }*/
}

/**
 * 初始化历史记录的分页
 * @param $pageBox
 * @param pagerObject
 */
function initPage($pageBox, pagerObject) {
    let pageStr = '';

    pageStr += '<li class="prev' + (pagerObject.currPage <= 1 ? ' disabled' : '') + '">';
    pageStr += '<a href="javascript:;">&lt;</a>';
    pageStr += '</li>';
    for (let i = 0; i < pagerObject.totalPage; i++) {
        pageStr += '<li class="page-num ' + (pagerObject.currPage == (i + 1) ? 'active' : '') + '">';
        pageStr += '<a href="javascript:;">' + (i + 1) + '</a>';
        pageStr += '</li>';
    }
    pageStr += '<li class="next' + (pagerObject.currPage <= pagerObject.totalPage ? ' disabled' : '') + '">';
    pageStr += '<a href="javascript:;">&gt;</a>';
    pageStr += '</li>';

    $pageBox.html(pageStr);

    // 为页码加点击事件
    $pageBox.on('click', '.page-num', function (event) {
        let $this = $(this);
        if (!$this.hasClass('active')) {// 不存在.active，不是选中状态
            /*
            点击的分页加.active
            判断是否是最小页，是：禁用上一页
            判断是否是最大页，是：禁用下一页
             */
            let currentPage = $this.text();// 当前页
            // 选中当前页
            $this.siblings('.page-num').removeClass('active');
            $this.addClass('active');
            if (currentPage == 1) {
                $pageBox.find('.prev').addClass('disabled');
            } else {
                $pageBox.find('.prev').removeClass('disabled');
            }
            if (currentPage == pagerObject.totalPage) {
                $pageBox.find('.next').addClass('disabled');
            } else {
                $pageBox.find('.next').removeClass('disabled');
            }

            // 刷新数据
            refreshDataTableOfPage(currentPage);
        }
    });

    // 为上一页下点击事件
    $pageBox.on('click', '.prev', function (event) {
        let $this = $(this);

        /*
        判断上一页是否存在.disabled，不存在：加载上一页数据，反之不加载
         */
        if (!$this.hasClass('disabled')) {
            // 加载上一页数据，并选中上一页
            let $prev = $('.active').prev('.page-num');
            let prevPage = $prev.text();
            $prev.siblings('.page-num').removeClass('active');
            $prev.addClass('active');

            if (prevPage == 1) {
                $this.addClass('disabled');
            }
            if (prevPage == pagerObject.totalPage) {
                $pageBox.find('.next').addClass('disabled');
            } else {
                $pageBox.find('.next').removeClass('disabled');
            }

            // 加载下一页数据
            refreshDataTableOfPage(prevPage);
        }
    });
    // 为下一页下点击事件
    $pageBox.on('click', '.next', function (event) {
        let $this = $(this);

        /*
        判断下一页是否存在.disabled，不存在：加载下一页数据，反之不加载
         */
        if (!$this.hasClass('disabled')) {
            // 加载下一页数据，并选中下一页
            let $next = $('.active').next('.page-num');
            let nextPage = $next.text();
            $next.siblings('.page-num').removeClass('active');
            $next.addClass('active');

            if (nextPage == 1) {
                $pageBox.find('.prev').addClass('disabled');
            } else {
                $pageBox.find('.prev').removeClass('disabled');
            }
            if (nextPage == pagerObject.totalPage) {
                $this.addClass('disabled');
            }
            // 加载下一页数据
            refreshDataTableOfPage(nextPage);
        }
    });
}

/**
 * 刷新指定页的数据
 * @param pageNumber
 */
function refreshDataTableOfPage(pageNumber) {
    let loadIndex = layer.load();
    $.getJSON(globalData.signInHistoryForPage, {currPage: pageNumber}, function (data) {
        refreshDataTable($('#data-table'), data.data);
        layer.close(loadIndex);
    });
}

/**
 * 更新数据表格
 * @param $dataTable
 * @param dataObject
 */
function refreshDataTable($dataTable, dataObject) {
    let $dataTableBody = $dataTable.find('tbody');

    let bodyStr = '';
    $.each(dataObject, function (i, e) {
        let time = new Date(e.createTime);
        bodyStr += '<tr>';
        bodyStr += '<td>' + (time.getFullYear() + '-' + (time.getMonth() + 1) + '-' + time.getDate()) + '</td>';
        bodyStr += '<td>' + e.scoreCount + '</td>';
        bodyStr += '</tr>';
    });

    $dataTableBody.html(bodyStr);
}

$(function () {
    // 点击关闭按钮，关闭当前弹出层
    let closeLayer = function () {
        $("body").on("click", ".close-qiandao-layer", function () {
            $(this).parents(".qiandao-layer").fadeOut()
        })
    }(); //关闭弹窗

    // 查看我的签到
    $("#js-qiandao-history").on("click", function () {
        let loadIndex = layer.load();

        $.getJSON(globalData.signInHistory, {}, function (data) {
            $('#continueDayText').text(data.continueDay);
            $('#signedInNumberOfMonth').text(data.signedInRecordList.length);
            $('#signedInNumber').text(data.pager.totalRow);
            $('#totalAward').text(data.userSignInIntegralNumber);

            // 更新数据表格数据
            refreshDataTable($('#data-table'), data.pager.data);
            // 分页
            initPage($('.pager-list'), data.pager);

            layer.close(loadIndex);

            // 打开弹出层
            openLayer("qiandao-history-layer", null);
        });
    });
});